package com.visizen.wisdomclass.server.client;

import com.visizen.wisdomclass.server.model.WcMedalScoreLog;
import com.visizen.wisdomclass.server.model.WcMedalScoreLogExample;
import com.visizen.wisdomclass.server.model.WcMedalScoreLogExample.Criteria;
import com.visizen.wisdomclass.server.model.WcMedalScoreLogExample.Criterion;

import java.util.List;
import java.util.Map;

import static org.apache.ibatis.jdbc.SqlBuilder.*;

public class WcMedalScoreLogSqlProvider {

	/**
	 * This method was generated by MyBatis Generator. This method corresponds to the database table wc_medal_score_log
	 * @mbggenerated
	 */
	public String countByExample(WcMedalScoreLogExample example) {
		BEGIN();
		SELECT("count(*)");
		FROM("wc_medal_score_log");
		applyWhere(example, false);
		return SQL();
	}

	/**
	 * This method was generated by MyBatis Generator. This method corresponds to the database table wc_medal_score_log
	 * @mbggenerated
	 */
	public String deleteByExample(WcMedalScoreLogExample example) {
		BEGIN();
		DELETE_FROM("wc_medal_score_log");
		applyWhere(example, false);
		return SQL();
	}

	/**
	 * This method was generated by MyBatis Generator. This method corresponds to the database table wc_medal_score_log
	 * @mbggenerated
	 */
	public String insertSelective(WcMedalScoreLog record) {
		BEGIN();
		INSERT_INTO("wc_medal_score_log");
		if (record.getId() != null) {
			VALUES("id", "#{id,jdbcType=BIGINT}");
		}
		if (record.getTerm_id() != null) {
			VALUES("term_id", "#{term_id,jdbcType=BIGINT}");
		}
		if (record.getStudent_user_id() != null) {
			VALUES("student_user_id", "#{student_user_id,jdbcType=BIGINT}");
		}
		if (record.getTeacher_user_id() != null) {
			VALUES("teacher_user_id", "#{teacher_user_id,jdbcType=BIGINT}");
		}
		if (record.getMedal_id() != null) {
			VALUES("medal_id", "#{medal_id,jdbcType=BIGINT}");
		}
		if (record.getScore() != null) {
			VALUES("score", "#{score,jdbcType=INTEGER}");
		}
		if (record.getScore_mode() != null) {
			VALUES("score_mode", "#{score_mode,jdbcType=INTEGER}");
		}
		if (record.getScore_date() != null) {
			VALUES("score_date", "#{score_date,jdbcType=DATE}");
		}
		if (record.getRemark() != null) {
			VALUES("remark", "#{remark,jdbcType=LONGVARCHAR}");
		}
		return SQL();
	}

	/**
	 * This method was generated by MyBatis Generator. This method corresponds to the database table wc_medal_score_log
	 * @mbggenerated
	 */
	public String selectByExampleWithBLOBs(WcMedalScoreLogExample example) {
		BEGIN();
		if (example != null && example.isDistinct()) {
			SELECT_DISTINCT("id");
		} else {
			SELECT("id");
		}
		SELECT("term_id");
		SELECT("student_user_id");
		SELECT("teacher_user_id");
		SELECT("medal_id");
		SELECT("score");
		SELECT("score_mode");
		SELECT("score_date");
		SELECT("remark");
		FROM("wc_medal_score_log");
		applyWhere(example, false);
		if (example != null && example.getOrderByClause() != null) {
			ORDER_BY(example.getOrderByClause());
		}
		return SQL();
	}

	/**
	 * This method was generated by MyBatis Generator. This method corresponds to the database table wc_medal_score_log
	 * @mbggenerated
	 */
	public String selectByExample(WcMedalScoreLogExample example) {
		BEGIN();
		if (example != null && example.isDistinct()) {
			SELECT_DISTINCT("id");
		} else {
			SELECT("id");
		}
		SELECT("term_id");
		SELECT("student_user_id");
		SELECT("teacher_user_id");
		SELECT("medal_id");
		SELECT("score");
		SELECT("score_mode");
		SELECT("score_date");
		FROM("wc_medal_score_log");
		applyWhere(example, false);
		if (example != null && example.getOrderByClause() != null) {
			ORDER_BY(example.getOrderByClause());
		}
		return SQL();
	}

	/**
	 * This method was generated by MyBatis Generator. This method corresponds to the database table wc_medal_score_log
	 * @mbggenerated
	 */
	public String updateByExampleSelective(Map<String, Object> parameter) {
		WcMedalScoreLog record = (WcMedalScoreLog) parameter.get("record");
		WcMedalScoreLogExample example = (WcMedalScoreLogExample) parameter
				.get("example");
		BEGIN();
		UPDATE("wc_medal_score_log");
		if (record.getId() != null) {
			SET("id = #{record.id,jdbcType=BIGINT}");
		}
		if (record.getTerm_id() != null) {
			SET("term_id = #{record.term_id,jdbcType=BIGINT}");
		}
		if (record.getStudent_user_id() != null) {
			SET("student_user_id = #{record.student_user_id,jdbcType=BIGINT}");
		}
		if (record.getTeacher_user_id() != null) {
			SET("teacher_user_id = #{record.teacher_user_id,jdbcType=BIGINT}");
		}
		if (record.getMedal_id() != null) {
			SET("medal_id = #{record.medal_id,jdbcType=BIGINT}");
		}
		if (record.getScore() != null) {
			SET("score = #{record.score,jdbcType=INTEGER}");
		}
		if (record.getScore_mode() != null) {
			SET("score_mode = #{record.score_mode,jdbcType=INTEGER}");
		}
		if (record.getScore_date() != null) {
			SET("score_date = #{record.score_date,jdbcType=DATE}");
		}
		if (record.getRemark() != null) {
			SET("remark = #{record.remark,jdbcType=LONGVARCHAR}");
		}
		applyWhere(example, true);
		return SQL();
	}

	/**
	 * This method was generated by MyBatis Generator. This method corresponds to the database table wc_medal_score_log
	 * @mbggenerated
	 */
	public String updateByExampleWithBLOBs(Map<String, Object> parameter) {
		BEGIN();
		UPDATE("wc_medal_score_log");
		SET("id = #{record.id,jdbcType=BIGINT}");
		SET("term_id = #{record.term_id,jdbcType=BIGINT}");
		SET("student_user_id = #{record.student_user_id,jdbcType=BIGINT}");
		SET("teacher_user_id = #{record.teacher_user_id,jdbcType=BIGINT}");
		SET("medal_id = #{record.medal_id,jdbcType=BIGINT}");
		SET("score = #{record.score,jdbcType=INTEGER}");
		SET("score_mode = #{record.score_mode,jdbcType=INTEGER}");
		SET("score_date = #{record.score_date,jdbcType=DATE}");
		SET("remark = #{record.remark,jdbcType=LONGVARCHAR}");
		WcMedalScoreLogExample example = (WcMedalScoreLogExample) parameter
				.get("example");
		applyWhere(example, true);
		return SQL();
	}

	/**
	 * This method was generated by MyBatis Generator. This method corresponds to the database table wc_medal_score_log
	 * @mbggenerated
	 */
	public String updateByExample(Map<String, Object> parameter) {
		BEGIN();
		UPDATE("wc_medal_score_log");
		SET("id = #{record.id,jdbcType=BIGINT}");
		SET("term_id = #{record.term_id,jdbcType=BIGINT}");
		SET("student_user_id = #{record.student_user_id,jdbcType=BIGINT}");
		SET("teacher_user_id = #{record.teacher_user_id,jdbcType=BIGINT}");
		SET("medal_id = #{record.medal_id,jdbcType=BIGINT}");
		SET("score = #{record.score,jdbcType=INTEGER}");
		SET("score_mode = #{record.score_mode,jdbcType=INTEGER}");
		SET("score_date = #{record.score_date,jdbcType=DATE}");
		WcMedalScoreLogExample example = (WcMedalScoreLogExample) parameter
				.get("example");
		applyWhere(example, true);
		return SQL();
	}

	/**
	 * This method was generated by MyBatis Generator. This method corresponds to the database table wc_medal_score_log
	 * @mbggenerated
	 */
	public String updateByPrimaryKeySelective(WcMedalScoreLog record) {
		BEGIN();
		UPDATE("wc_medal_score_log");
		if (record.getTerm_id() != null) {
			SET("term_id = #{term_id,jdbcType=BIGINT}");
		}
		if (record.getStudent_user_id() != null) {
			SET("student_user_id = #{student_user_id,jdbcType=BIGINT}");
		}
		if (record.getTeacher_user_id() != null) {
			SET("teacher_user_id = #{teacher_user_id,jdbcType=BIGINT}");
		}
		if (record.getMedal_id() != null) {
			SET("medal_id = #{medal_id,jdbcType=BIGINT}");
		}
		if (record.getScore() != null) {
			SET("score = #{score,jdbcType=INTEGER}");
		}
		if (record.getScore_mode() != null) {
			SET("score_mode = #{score_mode,jdbcType=INTEGER}");
		}
		if (record.getScore_date() != null) {
			SET("score_date = #{score_date,jdbcType=DATE}");
		}
		if (record.getRemark() != null) {
			SET("remark = #{remark,jdbcType=LONGVARCHAR}");
		}
		WHERE("id = #{id,jdbcType=BIGINT}");
		return SQL();
	}

	/**
	 * This method was generated by MyBatis Generator. This method corresponds to the database table wc_medal_score_log
	 * @mbggenerated
	 */
	protected void applyWhere(WcMedalScoreLogExample example,boolean includeExamplePhrase){if (example == null){return;}String parmPhrase1;String parmPhrase1_th;String parmPhrase2;String parmPhrase2_th;String parmPhrase3;String parmPhrase3_th;if (includeExamplePhrase){parmPhrase1="%s #{example.oredCriteria[%d].allCriteria[%d].value}";parmPhrase1_th="%s #{example.oredCriteria[%d].allCriteria[%d].value,typeHandler=%s}";parmPhrase2="%s #{example.oredCriteria[%d].allCriteria[%d].value} and #{example.oredCriteria[%d].criteria[%d].secondValue}";parmPhrase2_th="%s #{example.oredCriteria[%d].allCriteria[%d].value,typeHandler=%s} and #{example.oredCriteria[%d].criteria[%d].secondValue,typeHandler=%s}";parmPhrase3="#{example.oredCriteria[%d].allCriteria[%d].value[%d]}";parmPhrase3_th="#{example.oredCriteria[%d].allCriteria[%d].value[%d],typeHandler=%s}";} else {parmPhrase1="%s #{oredCriteria[%d].allCriteria[%d].value}";parmPhrase1_th="%s #{oredCriteria[%d].allCriteria[%d].value,typeHandler=%s}";parmPhrase2="%s #{oredCriteria[%d].allCriteria[%d].value} and #{oredCriteria[%d].criteria[%d].secondValue}";parmPhrase2_th="%s #{oredCriteria[%d].allCriteria[%d].value,typeHandler=%s} and #{oredCriteria[%d].criteria[%d].secondValue,typeHandler=%s}";parmPhrase3="#{oredCriteria[%d].allCriteria[%d].value[%d]}";parmPhrase3_th="#{oredCriteria[%d].allCriteria[%d].value[%d],typeHandler=%s}";}StringBuilder sb=new StringBuilder();List<Criteria> oredCriteria=example.getOredCriteria();boolean firstCriteria=true;for (int i=0;i < oredCriteria.size();i++){Criteria criteria=oredCriteria.get(i);if (criteria.isValid()){if (firstCriteria){firstCriteria=false;} else {sb.append(" or ");}sb.append('(');List<Criterion> criterions=criteria.getAllCriteria();boolean firstCriterion=true;for (int j=0;j < criterions.size();j++){Criterion criterion=criterions.get(j);if (firstCriterion){firstCriterion=false;} else {sb.append(" and ");}if (criterion.isNoValue()){sb.append(criterion.getCondition());} else if (criterion.isSingleValue()){if (criterion.getTypeHandler() == null){sb.append(String.format(parmPhrase1,criterion.getCondition(),i,j));} else {sb.append(String.format(parmPhrase1_th,criterion.getCondition(),i,j,criterion.getTypeHandler()));}} else if (criterion.isBetweenValue()){if (criterion.getTypeHandler() == null){sb.append(String.format(parmPhrase2,criterion.getCondition(),i,j,i,j));} else {sb.append(String.format(parmPhrase2_th,criterion.getCondition(),i,j,criterion.getTypeHandler(),i,j,criterion.getTypeHandler()));}} else if (criterion.isListValue()){sb.append(criterion.getCondition());sb.append(" (");List<?> listItems=(List<?>)criterion.getValue();boolean comma=false;for (int k=0;k < listItems.size();k++){if (comma){sb.append(", ");} else {comma=true;}if (criterion.getTypeHandler() == null){sb.append(String.format(parmPhrase3,i,j,k));} else {sb.append(String.format(parmPhrase3_th,i,j,k,criterion.getTypeHandler()));}}sb.append(')');}}sb.append(')');}}if (sb.length() > 0){WHERE(sb.toString());}}
}